package com.juzipi.demo.pojo;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {

//    @TableId(type = IdType.ID_WORKER)
//    @TableId(type = IdType.ID_WORKER_STR)
    //上面是 mp 自带的id生成策略

    /*
    idType:
        AUTO: 数据库ID自增
        NONE：无状态，自行输入，该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
        INPUT：insert前自行set主键值
        ASSIGN_ID：分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口 IdentifierGenerator 的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)
        ASSIGN_UUID：分配UUID,主键类型为String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认default方法)

        //这三个新版本已弃用,ID_WORKER和ID_WORKER_STR分别被替换成了 ASSIGN_ID 和 ASSIGN_UUID
        ID_WORKER：分布式全局唯一ID 长整型类型(please use ASSIGN_ID)
        UUID：32位UUID字符串(please use ASSIGN_UUID)
        ID_WORKER_STR：分布式全局唯一ID 字符串类型(please use ASSIGN_ID)

     */
//    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private String name;
    private Integer age;
    private String email;
    //自动填充，在 INSERT 的时候
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    //自动填充，在 添加和修改 的时候
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    //乐观锁注解
    @Version
    @TableField(fill = FieldFill.INSERT)
    private Integer version;
    //逻辑删除注解
    @TableLogic
//    @TableField(fill = FieldFill.INSERT)
    private Integer deleted;

}
